In a client-server streaming media environment, a media server streams media data to a client media receiver for playback. In such an environment, the client media receiver may buffer only a few seconds worth of media samples before playback, discarding those samples once playback has occurred.
Some media receivers may have operating modes other than normal speed playback (“1× playback”). One common operation is a seek operation, in which a user may request the current playback position within the media stream to jump ahead or behind a current playback location to other locations in the media stream. As a specific example, a media receiver receiving movie data from a digital video disc (DVD) player may allow a user to jump between start points of chapters or scenes in the movie. Likewise, a media receiver receiving media data from a digital video recorder (DVR) may allow a user to jump a set number of seconds forward or backward within a media data stream.
During such seek operations, a media receiver may flush currently buffered data and request new media samples from the server for the new playback position. However, the request and receipt of the new media samples may take some time due to network latency, which may be perceived by a viewer as a pause before playback begins at the requested seek point.
Some streaming technologies have attempted to overcome such latency by using a form of streaming called “progressive download” in which an entire media stream is downloaded and stored local to the media receiver. However, such methods may not be suitable for use on media receivers with limited local storage. Further, such methods only improve performance at seek points if the media stream has been buffered past the requested seek point.